Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
👤게스트 로그인 구현
📝 개요
게스트 로그인을 구현하였습니다.
⚙️ 구현 내용
Redis에 게스트 정보를 저장하기 위한 GuestUser 클래스를 생성했습니다.
게스트의 id는 중복되면 안되기 때문에 중복인지 아닌지 검사를 통해 생성하였고, 최대한 중복이 되지 않게 하기 위해서 64비트 값을 반환하는 함수인
UUID.randomUUID().getMostSignificantBits()를 사용해서 생성하였습니다.닉네임은 무작위 형용사와 명사를 사용해서 6글자 이내로 생성하도록 하였습니다.
게스트의 정보가 만들어지면 레디스에 저장 후, 해당 정보를 토대로 토큰을 생성합니다.
게스트는 일반 사용자와 다르게 할 수 있는 기능에 제한을 둘 예정이라 일반 유저의
SecurityUserDetails와 달리GuestUserDetails를 생성해서 게스트 전용 인증 객체를 사용하였습니다.JwtAuthenticationFilter에서 토큰을 검사하는 과정에서 아래와 같은 로직을 통해 권한이 게스트라면 게스트 객체를 통해 게스트 권한만 주도록 했습니다.그리고 현재 로그인 시 at, rt를 같이 발행해주기 때문에 at가 만료되면 일반 사용자와 같이 재발급을 하면 똑같이 재발급이 되게 됩니다.
게스트가 로그인되어 있는 동안은 게스트의 정보가 redis에 유지되어야 하기 때문에 권한 인증 과정에서
guestUserService.getGuestUser(guestId);메서드를 호출할 때마다 ttl을 초기화해주도록 하였습니다.📎 기타
게스트와 일반 사용자가 같은 기능을 사용하게 된다면 역할을 분리해주기 위해서 아래와 같이 사용하면 될 것 같습니다.
사용자의 정보를 조회하는 간단한 예시입니다.
🧪 테스트 결과
게스트 사용자 정보 조회 결과
